import { getLastEvent } from '../util/getLastEvent';
import { getSelector } from '../util/getSelector';
import tracker from '../util/tracker';

export function injectJsError() {
  window.addEventListener('error', function (event) {
    let lastEvent = getLastEvent();
    let log = {
      kind: 'stability', // 大类： 监控指标
      type: 'error', // 小类型: 错误
      errorType: 'jsError', // js 执行错误
      message: event.message,
      filename: event.filename, // 报错的文件名
      position: `${event.lineno}:${event.colno}`,
      stack: getLines(event.error.stack),
      selector: lastEvent ? getSelector(lastEvent.path) : '', // 最后一个操作的选择器
    };
    tracker.send(log);
  });

  window.addEventListener('unhandledrejection', function (event) {
    console.log(event);
  });

  function getLines(stack) {
    return stack
      .split('\n')
      .slice(1)
      .map(item => item.replace(/^\s+at\s+/g, ''));
  }
}
